package auth

import "time"

type User struct {
	ID          uint   `gorm:"primarykey"`
	TenantID    uint   `gorm:"index;not null"`   // 租户ID
	Username    string `gorm:"size:50;not null"` // 用户名
	Password    string `gorm:"size:50;not null"` // 密码
	Status      int    `gorm:"default:1"`        // 状态：1-正常，2-禁用
	Description string `gorm:"size:200"`         // 描述
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

func (User) TableName() string {
	return "auth_user"
}

// Role 角色实体
type Role struct {
	ID          uint   `gorm:"primarykey"`
	TenantID    uint   `gorm:"index;not null"`   // 租户ID
	Name        string `gorm:"size:50;not null"` // 角色名称
	Code        string `gorm:"size:50;not null"` // 角色编码
	Status      int    `gorm:"default:1"`        // 状态：1-正常，2-禁用
	Description string `gorm:"size:200"`         // 描述
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

// TableName 表名
func (Role) TableName() string {
	return "auth_role"
}

// UserRole 用户角色关联实体
type UserRole struct {
	ID        uint `gorm:"primarykey"`
	TenantID  uint `gorm:"index;not null"` // 租户ID
	UserID    uint `gorm:"index;not null"` // 用户ID
	RoleID    uint `gorm:"index;not null"` // 角色ID
	CreatedAt time.Time
	UpdatedAt time.Time
}

// TableName 表名
func (UserRole) TableName() string {
	return "auth_user_role"
}

// Permission 权限实体
type Permission struct {
	ID          uint   `gorm:"primarykey"`
	TenantID    uint   `gorm:"index;not null"`   // 租户ID
	Name        string `gorm:"size:50;not null"` // 权限名称
	Type        int    `gorm:"default:1"`        // 类型：1-一般权限，2-资源权限
	Code        string `gorm:"size:50;not null"` // 权限编码
	Icon        string `gorm:"size:50"`          // 图标
	Status      int    `gorm:"default:1"`        // 状态：1-正常，2-禁用
	Description string `gorm:"size:200"`         // 描述
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

// TableName 表名
func (Permission) TableName() string {
	return "auth_permission"
}

// RolePermission 角色权限关联实体
type RolePermission struct {
	ID             uint   `gorm:"primarykey"`
	TenantID       uint   `gorm:"index;not null"`   // 租户ID
	RoleCode       string `gorm:"index;not null"`   // 角色编码
	PermissionCode string `gorm:"index;not null"`   // 权限编码
	ResourceCode   string `gorm:"size:50;not null"` // 资源编码
	CreatedAt      time.Time
	UpdatedAt      time.Time
}

// TableName 表名
func (RolePermission) TableName() string {
	return "auth_role_permission"
}
